home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / Xconq 7.1.0 / src / xconq-7.1.0 / kernel / conq.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-07  |  17.2 KB  |  375 lines  |  [TEXT/R*ch]

  1. /* Main include file for Xconq.
  2.    Copyright (C) 1991, 1992, 1993, 1994, 1995 Stanley T. Shebs.
  3.  
  4. Xconq is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.  See the file COPYING.  */
  8.  
  9. /* This is the include file that nearly all Xconq source files
  10.    should include (exceptions would be very low-level or generic
  11.    sources). */
  12.  
  13. #include "config.h"
  14. #include "misc.h"
  15. #include "dir.h"
  16. #include "lisp.h"
  17. #include "module.h"
  18. #include "game.h"
  19. #include "player.h"
  20. #include "side.h"
  21. #include "unit.h"
  22. #include "world.h"
  23. #include "history.h"
  24. #include "score.h"
  25. #include "help.h"
  26. #include "ai.h"
  27. #include "system.h"
  28.  
  29. /* (should be in a movies.h?) */
  30.  
  31. enum movie_type {
  32.   movie_null,
  33.   movie_miss,
  34.   movie_hit,
  35.   movie_death,
  36.   movie_nuke,
  37.   movie_extra_0
  38. };
  39.  
  40. typedef struct a_movie_type {
  41.   enum movie_type type;
  42.   char *name;
  43. } MovieType;
  44.  
  45. /* Declarations of globally visible globals. */
  46.  
  47. extern int typesdefined;
  48. extern int gamedefined;
  49. extern int compromised;
  50. extern int cursequence;
  51. extern int beforestart;
  52. extern int endofgame;
  53. extern int gamestatesafe;
  54. extern int interfacestatesafe;
  55. extern int any_post_action_scores;
  56. extern int any_people_side_changes;
  57. extern int max_zoc_range;
  58. extern int warnings_suppressed;
  59. extern time_t game_start_in_real_time;
  60. extern time_t turn_play_start_in_real_time;
  61.  
  62. extern short *u_possible;
  63.  
  64. /* Declarations of functions that must be supplied by an interface. */
  65.  
  66. extern void announce_read_progress PARAMS ((void));
  67. extern void announce_lengthy_process PARAMS ((char *msg));
  68. extern void announce_progress PARAMS ((int pctdone));
  69. extern void finish_lengthy_process PARAMS ((void));
  70.  
  71. extern Player *add_default_player PARAMS ((void));
  72.  
  73. extern void init_ui PARAMS ((Side *side));
  74.  
  75. extern int active_display PARAMS ((Side *side));
  76.  
  77. extern void update_turn_display PARAMS ((Side *side, int rightnow));
  78. extern void update_action_display PARAMS ((Side *side, int rightnow));
  79. extern void update_action_result_display PARAMS ((Side *side, Unit *unit, int rslt, int rightnow));
  80. extern void update_event_display PARAMS ((Side *side, HistEvent *hevt, int rightnow));
  81. extern void update_fire_at_display PARAMS ((Side *side, Unit *unit, Unit *unit2, int m, int rightnow));
  82. extern void update_fire_into_display PARAMS ((Side *side, Unit *unit, int x, int y, int z, int m, int rightnow));
  83. extern void update_clock_display PARAMS ((Side *side, int rightnow));
  84. extern void update_side_display PARAMS ((Side *side, Side *side2, int rightnow));
  85. extern void update_unit_display PARAMS ((Side *side, Unit *unit, int rightnow));
  86. extern void update_unit_acp_display PARAMS ((Side *side, Unit *unit, int rightnow));
  87. extern void update_message_display PARAMS ((Side *side, Side *side2, char *str, int rightnow));
  88. extern void update_cell_display PARAMS ((Side *side, int x, int y, int rightnow));
  89. extern void update_all_progress_displays PARAMS ((char *str, int s));
  90. extern void update_everything PARAMS ((void));
  91. extern void flush_display_buffers PARAMS ((Side *side));
  92.  
  93. extern int schedule_movie PARAMS ((Side *side, enum movie_type movie, ...));
  94. extern void play_movies PARAMS ((SideMask sidemask));
  95.  
  96. extern void ui_save_state PARAMS ((Side *side));
  97.  
  98. extern void action_point PARAMS ((Side *side, int x, int y));
  99.  
  100. extern void notify_all PARAMS ((char *str, ...));
  101. extern void notify PARAMS ((Side *side, char *str, ...));
  102. #ifdef ANSI_PROTOTYPES
  103. extern void vnotify PARAMS ((Side *side, char *fmt, va_list ap));
  104. #endif
  105. extern void low_notify PARAMS ((Side *side, char *str));
  106.  
  107. extern void init_warning PARAMS ((char *str, ...));
  108. extern void low_init_warning PARAMS ((char *str));
  109. extern void init_error PARAMS ((char *str, ...));
  110. extern void low_init_error PARAMS ((char *str));
  111. extern void run_warning PARAMS ((char *str, ...));
  112. extern void low_run_warning PARAMS ((char *str));
  113. extern void run_error PARAMS ((char *str, ...));
  114. extern void low_run_error PARAMS ((char *str));
  115.  
  116. extern void print_form PARAMS ((Obj *form));
  117. extern void end_printing_forms PARAMS ((void));
  118.  
  119. extern void close_displays PARAMS ((void));
  120.  
  121. /* Declarations of functions not elsewhere declared. */
  122.  
  123. extern void init_library_path PARAMS ((char *path));
  124. extern void init_data_structures PARAMS ((void));
  125. extern void check_game_validity PARAMS ((void));
  126. extern void calculate_globals PARAMS ((void));
  127. extern void patch_object_references PARAMS ((void));
  128. extern void make_trial_assignments PARAMS ((void));
  129. extern Side *make_up_a_side PARAMS ((void));
  130. extern void init_side_advantage PARAMS ((Side *side));
  131. extern int add_side_and_player PARAMS ((void));
  132. extern int exchange_players PARAMS ((int n, int n2));
  133. extern int remove_side_and_player PARAMS ((void));
  134. extern void run_synth_methods PARAMS ((void));
  135. extern int make_random_date PARAMS ((int calls, int runs));
  136. extern int make_weather PARAMS ((int calls, int runs));
  137. extern void final_init PARAMS ((void));
  138. extern void configure_sides PARAMS ((void));
  139. extern void init_all_views PARAMS ((void));
  140. extern void init_area_views PARAMS ((void));
  141. extern int make_initial_materials PARAMS ((int calls, int runs));
  142. extern void init_supply PARAMS ((Unit *unit));
  143. extern int saved_game PARAMS ((void));
  144. extern void init_side_balance PARAMS ((void));
  145. extern void check_consistency PARAMS ((void));
  146. extern void assign_players_to_sides PARAMS ((void));
  147. extern char *version_string PARAMS ((void));
  148. extern char *copyright_string PARAMS ((void));
  149. extern char *license_string PARAMS ((void));
  150.  
  151. extern void syntax_error PARAMS ((Obj *x, char *msg));
  152. extern void type_error PARAMS ((Obj *x, char *msg));
  153. extern void interp_form PARAMS ((Module *module, Obj *form));
  154. extern void interp_game_module PARAMS ((Obj *form, Module *module));
  155. extern void do_module_variants PARAMS ((Module *module, Obj *lis));
  156. extern void fill_in_side PARAMS ((Side *side, Obj *props, int userdata));
  157. extern void read_warning PARAMS ((char *str, ...));
  158. extern int utype_from_name PARAMS ((char *str));
  159. extern int utype_from_symbol PARAMS ((Obj *sym));
  160.  
  161. extern void init_actions PARAMS ((void));
  162. extern int can_move_via_conn PARAMS ((Unit *unit, int nx, int ny));
  163. extern int can_occupy_conn PARAMS ((Unit *unit, int nx, int ny, int nz));
  164. extern int move_unit PARAMS ((Unit *unit, int nx, int ny));
  165. extern int can_move_at_all PARAMS ((Unit *unit));
  166. extern int in_blocking_zoc PARAMS ((Unit *unit, int x, int y, int z));
  167. extern int unit_blockable_by PARAMS ((Unit *unit, Unit *unit2));
  168. extern int total_move_cost PARAMS ((int u, int u2, int x1, int y1, int z1, int x2, int y2, int z2));
  169. extern int zoc_move_cost PARAMS ((Unit *unit, int ox, int oy, int oz));
  170. extern int maybe_react_to_move PARAMS ((Unit *unit, int ox, int oy));
  171. extern void consume_move_supplies PARAMS ((Unit *unit));
  172. extern int sides_allow_entry PARAMS ((Unit *unit, Unit *transport));
  173. extern int total_entry_cost PARAMS ((int u1, int u3, int x1, int y1, int z1, int u2, int x2, int y2, int z2));
  174. extern int transfer_supply PARAMS ((Unit *from, Unit *to, int m, int amount));
  175. extern void adjust_tech_crossover PARAMS ((Side *side, int u));
  176. extern void adjust_tooling_crossover PARAMS ((Unit *unit, int u2));
  177. extern void garrison_unit PARAMS ((Unit *unit, Unit *unit2));
  178. extern void make_unit_complete PARAMS ((Unit *unit));
  179. extern void distribute_material PARAMS ((Unit *unit, int m, int amt));
  180. extern int execute_action PARAMS ((Unit *unit, Action *action));
  181. extern int can_have_enough_acp PARAMS ((Unit *unit, int acp));
  182. extern int has_enough_acp PARAMS ((Unit *unit, int acp));
  183. extern int has_supply_to_act PARAMS ((Unit *unit));
  184. extern void use_up_acp PARAMS ((Unit *unit, int acp));
  185. extern int people_surrender_chance PARAMS ((int u, int x, int y));
  186. extern void detonate_on_approach_around PARAMS ((Unit *unit));
  187. extern int unit_speed PARAMS ((Unit *unit, int nx, int ny));
  188. extern int zoc_range PARAMS ((Unit *unit, int u2));
  189. extern int damaged_value PARAMS ((Unit *unit, Obj *effect, int maxval));
  190.  
  191. extern int can_research PARAMS ((Unit *unit));
  192. extern int type_can_research PARAMS ((int u));
  193. extern int can_toolup PARAMS ((Unit *unit));
  194. extern int type_can_toolup PARAMS ((int u));
  195. extern int can_create PARAMS ((Unit *unit));
  196. extern int type_can_create PARAMS ((int u));
  197. extern int can_complete PARAMS ((Unit *unit));
  198. extern int type_can_complete PARAMS ((int u));
  199. extern int can_repair PARAMS ((Unit *unit));
  200. extern int type_can_repair PARAMS ((int u));
  201. extern int can_change_type PARAMS ((Unit *unit));
  202. extern int type_can_change_type PARAMS ((int u));
  203. extern int can_disband PARAMS ((Unit *unit));
  204. extern int type_can_disband PARAMS ((int u));
  205. extern int side_can_disband PARAMS ((Side *side, Unit *unit));
  206. extern int can_add_terrain PARAMS ((Unit *unit));
  207. extern int type_can_add_terrain PARAMS ((int u));
  208. extern int can_remove_terrain PARAMS ((Unit *unit));
  209. extern int type_can_remove_terrain PARAMS ((int u));
  210. extern int any_construction_possible PARAMS ((void));
  211. extern char *action_desig PARAMS ((Action *act));
  212.  
  213. extern int can_attack PARAMS ((Unit *unit));
  214. extern int type_can_attack PARAMS ((int u));
  215. extern int can_fire PARAMS ((Unit *unit));
  216. extern int type_can_fire PARAMS ((int u));
  217. extern int type_can_capture PARAMS ((int u));
  218. extern int can_detonate PARAMS ((Unit *unit));
  219.  
  220. extern int found_blocking_elevation PARAMS ((int u, int ux, int uy, int uz, int u2, int u2x, int u2y, int u2z));
  221. extern int enough_ammo PARAMS ((Unit *unit, Unit *other));
  222. extern void reckon_damage PARAMS ((void));
  223. extern void reckon_damage_around PARAMS ((int x, int y, int r));
  224. extern void damage_unit PARAMS ((Unit *unit, enum damage_reasons reason));
  225. extern int capture_chance PARAMS ((int u, int u2, Side *side2));
  226. extern void capture_unit PARAMS ((Unit *unit, Unit *pris));
  227. extern int detonate_unit PARAMS ((Unit *unit, int x, int y, int z));
  228.  
  229. extern int multiply_dice PARAMS ((int dice, int mult));
  230. extern void damage_terrain PARAMS ((int u, int x, int y));
  231.  
  232. extern int run_game PARAMS ((int maxactions));
  233. extern void test_for_game_start PARAMS ((void));
  234. extern void test_for_game_end PARAMS ((void));
  235. extern int damaged_acp PARAMS ((Unit *unit, Obj *effect));
  236. extern int all_sides_finished PARAMS ((void));
  237. extern void finish_turn PARAMS ((Side *side));
  238. extern void check_realtime PARAMS ((void));
  239. extern int exceeded_rt_for_game PARAMS ((void));
  240. extern int exceeded_rt_per_turn PARAMS ((void));
  241. extern void compute_acp PARAMS ((Unit *unit));
  242. extern int units_still_acting PARAMS ((Side *side));
  243. extern void resign_game PARAMS ((Side *side, Side *side2));
  244. extern int realtime_game PARAMS ((void));
  245. extern int all_others_willing_to_save PARAMS ((Side *side));
  246. extern int all_others_willing_to_quit PARAMS ((Side *side));
  247. extern void end_the_game PARAMS ((void));
  248. extern void change_people_side_around PARAMS ((int x, int y, int u, Side *side));
  249. extern void init_random_events PARAMS ((void));
  250. extern void maybe_starve PARAMS ((Unit *unit, int partial));
  251. extern int people_surrender_chance PARAMS ((int u, int x, int y));
  252. extern int unit_priority PARAMS ((Unit *unit));
  253. extern int num_people_at PARAMS ((int x, int y));
  254.  
  255. extern int request_additional_side PARAMS ((char *playerspec));
  256. extern void parse_player_spec PARAMS ((Player *player, char *spec));
  257.  
  258. extern int get_synth_method_uses PARAMS ((int methkey, int *calls, int *runs));
  259.  
  260. extern int make_fractal_terrain PARAMS ((int calls, int runs));
  261. extern int make_random_terrain PARAMS ((int calls, int runs));
  262. extern int make_earthlike_terrain PARAMS ((int calls, int runs));
  263. extern int make_maze_terrain PARAMS ((int calls, int runs));
  264. extern int name_geographical_features PARAMS ((int calls, int runs));
  265. extern void add_edge_terrain PARAMS ((void));
  266.  
  267. extern int make_countries PARAMS ((int calls, int runs));
  268. extern int make_independent_units PARAMS ((int calls, int runs));
  269.  
  270. extern int make_rivers PARAMS ((int calls, int runs));
  271.  
  272. extern int make_roads PARAMS ((int calls, int runs));
  273.  
  274. extern Obj *make_namer PARAMS ((Obj *sym, Obj *meth));
  275.  
  276. extern void init_namers PARAMS ((void));
  277. extern void make_up_side_name PARAMS ((Side *side));
  278. extern int name_in_use PARAMS ((Side *side, char *str));
  279. extern int name_units_randomly PARAMS ((int calls, int runs));
  280. extern char *unit_namer PARAMS ((Unit *unit));
  281. extern char *propose_unit_name PARAMS ((Unit *unit));
  282. extern void make_up_unit_name PARAMS ((Unit *unit));
  283. extern void assign_unit_number PARAMS ((Unit *unit));
  284. extern char *run_namer PARAMS ((Obj *namer));
  285. extern char *name_from_grammar PARAMS ((Obj *grammar));
  286. extern void gen_name PARAMS ((Obj *nonterm, Obj *rules, int depth, char *rslt));
  287. extern void gen_from_rule PARAMS ((Obj *rule, Obj *rules, int depth, char *rslt));
  288.  
  289. extern void init_nlang PARAMS ((void));
  290. extern void pad_out PARAMS ((char *buf, int n));
  291. extern char *short_side_title PARAMS ((Side *side));
  292. extern char *shortest_side_title PARAMS ((Side *side2, char *buf));
  293. extern char *rel_short_side_title PARAMS ((Side *side, Side *side2, int n));
  294. extern char *rel_long_side_title PARAMS ((Side *side, Side *side2));
  295. extern char *narrative_side_desc PARAMS ((Side *side, Side *side2));
  296. extern char *narrative_side_desc_first PARAMS ((Side *side, Side *side2));
  297. extern char *long_player_title PARAMS ((char *buf, Player *player, char *thisdisplayname));
  298. extern char *short_player_title PARAMS ((char *buf, Player *player, char *thisdisplayname));
  299. extern void side_and_type_name PARAMS ((char *buf, Side *side, int u, Side *side2));
  300. extern char *unit_handle PARAMS ((Side *side, Unit *unit));
  301. extern char *short_unit_handle PARAMS ((Unit *unit));
  302. extern void name_or_number PARAMS ((Unit *unit, char *buf));
  303. extern void construction_desc PARAMS ((char *buf, Unit *unit, int u));
  304. extern void constructible_desc PARAMS ((char *buf, Side *side, int u, Unit *unit));
  305. extern int est_completion_time PARAMS ((Unit *unit, int u2));
  306. extern void historical_event_date_desc PARAMS ((HistEvent *hevt, char *buf));
  307. extern void historical_event_desc PARAMS ((Side *side, HistEvent *hevt, char *buf));
  308. extern char *action_result_desc PARAMS ((int rslt));
  309. extern void linear_desc PARAMS ((char *buf, int x, int y));
  310. extern void elevation_desc PARAMS ((char *buf, int x, int y));
  311. extern char *feature_desc PARAMS ((Feature *feature, char *buf));
  312. extern char *feature_name_at PARAMS ((int x, int y));
  313. extern void temperature_desc PARAMS ((char *buf, int x, int y));
  314. extern void hp_desc PARAMS ((char *buf, Unit *unit, int label));
  315. extern void acp_desc PARAMS ((char *buf, Unit *unit, int label));
  316. extern void plan_desc PARAMS ((char *buf, Unit *unit));
  317. extern void task_desc PARAMS ((char *buf, Task *task));
  318. extern void time_desc PARAMS ((char *buf, int time, int maxtime));
  319. extern char *summarize_units PARAMS ((char *buf, int *ucnts));
  320. extern char *exit_commentary PARAMS ((Side *side));
  321. extern char *ordinal_suffix PARAMS ((int n));
  322. extern char *plural_form PARAMS ((char *word));
  323. extern char *make_text PARAMS ((char *buf, Obj *maker, long a1, long a2, long a3, long a4));
  324. extern char *absolute_date_string PARAMS ((int date));
  325. extern char *relative_date_string PARAMS ((int date, int base));
  326. extern void write_unit_record PARAMS ((FILE *fp, Side *side));
  327. extern void write_side_results PARAMS ((FILE *fp, Side *side));
  328. extern void write_combat_results PARAMS ((FILE *fp, Side *side));
  329. extern void dice_desc PARAMS ((char *buf, int dice));
  330. extern char *past_unit_handle PARAMS ((Side *side, PastUnit *past_unit));
  331. extern char *short_past_unit_handle PARAMS ((PastUnit *past_unit));
  332. extern void past_name_or_number PARAMS ((PastUnit *past_unit, char *buf));
  333. extern void record_missing_image PARAMS ((int typtyp, char *str));
  334. extern int missing_images PARAMS ((char *buf));
  335. extern void notify_all_of_resignation PARAMS ((Side *side, Side *side2));
  336. extern int short_side_title_plural_p PARAMS ((Side *side));
  337. extern char *short_side_title_with_adjective PARAMS ((Side *side, char *adjective));
  338.  
  339. extern void set_initial_date PARAMS ((char *str));
  340. extern long parse_date PARAMS ((char *datestr));
  341. extern int find_event_type PARAMS ((Obj *sym));
  342. extern char *side_score_desc PARAMS ((char *buf, Side *side, Scorekeeper *sk));
  343.  
  344. extern void doublecheck_state PARAMS ((Side *side));
  345. extern long extension_value PARAMS ((Obj *extensions, char *key, long dflt));
  346. extern void set_u_internal_name PARAMS ((int u, char *s));
  347. extern void set_u_type_name PARAMS ((int u, char *s));
  348. extern void set_m_type_name PARAMS ((int m, char *s));
  349. extern void set_t_type_name PARAMS ((int t, char *s));
  350. extern int coerce_to_side_id PARAMS ((Obj *x));
  351. extern Side *coerce_to_side PARAMS ((Obj *x));
  352. extern int coerce_to_unit_id PARAMS ((Obj *x));
  353. extern Unit *coerce_to_unit PARAMS ((Obj *x));
  354.  
  355. extern void init_write PARAMS ((void));
  356. extern int write_entire_game_state PARAMS ((char *fname));
  357. extern int write_game_module PARAMS ((Module *module));
  358.  
  359. extern int total_gain PARAMS ((Side *side, int u));
  360. extern int total_loss PARAMS ((Side *side, int u));
  361.  
  362. extern int lookup_plan_type PARAMS ((char *name));
  363. extern int lookup_task_type PARAMS ((char *name));
  364. extern int lookup_goal_type PARAMS ((char *name));
  365.  
  366. extern void set_play_rate PARAMS ((int slow, int fast));
  367. extern int n_ms_elapsed PARAMS ((int n));
  368. extern void record_ms PARAMS ((void));
  369. extern int all_human_only_sides_finished PARAMS ((void));
  370.  
  371. extern int get_synth_method_uses PARAMS ((int methkey, int *calls, int *runs));
  372. extern void set_initial_date PARAMS ((char *str));
  373. extern int turns_between PARAMS ((char *str1, char *str2));
  374. extern int visible_to PARAMS ((Unit *unit, Unit *unit2));
  375.